// Decompiled by DJ v3.12.12.96 Copyright 2011 Atanas Neshkov  Date: 08/04/2013 18:08:10
// Home Page: http://members.fortunecity.com/neshkov/dj.html  http://www.neshkov.com/dj.html - Check often for new version!
// Decompiler options: packimports(3) 
// Source File Name:   EnvioComprobantesWs.java
package com.nirsa.comprobantes.logica;

import com.nirsa.comprobantes.modelo.Respuesta;
import com.nirsa.comprobantes.util.ArchivoUtils;
import ec.gob.sri.comprobantes.ws.Comprobante;
import ec.gob.sri.comprobantes.ws.Mensaje;
import ec.gob.sri.comprobantes.ws.RecepcionComprobantes;
import ec.gob.sri.comprobantes.ws.RecepcionComprobantesService;
import ec.gob.sri.comprobantes.ws.RespuestaSolicitud;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Date;
import java.util.Iterator;
import javax.xml.namespace.QName;
import javax.xml.ws.WebServiceException;

// Referenced classes of package ec.gob.sri.comprobantes.util:
//            ArchivoUtils
public class EnvioComprobantesWs {

    public EnvioComprobantesWs(String wsdlLocation) throws MalformedURLException, WebServiceException {
        URL url = new URL(wsdlLocation);
        QName qname = new QName("http://ec.gob.sri.ws.recepcion", "RecepcionComprobantesService");
        service = new RecepcionComprobantesService(url, qname);
    }

    public static final Object webService(String wsdlLocation) {
        try {
            QName qname = new QName("http://ec.gob.sri.ws.recepcion", "RecepcionComprobantesService");
            URL url = new URL(wsdlLocation);
            service = new RecepcionComprobantesService(url, qname);
            return null;
        } catch (MalformedURLException ex) {
//            Logger.getLogger(ec/gob/sri/comprobantes/util/EnvioComprobantesWs.getName()).log(Level.SEVERE, null, ex);
            return ex;
        } catch (WebServiceException ws) {
            return ws;
        }
    }

    public RespuestaSolicitud enviarComprobante(String ruc, File xmlFile, String tipoComprobante, String versionXsd) {
        RespuestaSolicitud response = null;
        try {
            RecepcionComprobantes port = service.getRecepcionComprobantesPort();
            response = port.validarComprobante(ArchivoUtils.convertirArchivoAByteArray(xmlFile));
        } catch (Exception e) {
//            Logger.getLogger(ec/gob/sri/comprobantes/util/EnvioComprobantesWs.getName()).log(Level.SEVERE, null, e);
            e.printStackTrace();
            response = new RespuestaSolicitud();
            response.setEstado(e.getMessage());
            return response;
        }
        return response;
    }

    public RespuestaSolicitud enviarComprobanteLotes(String ruc, byte xml[], String tipoComprobante, String versionXsd) {
        RespuestaSolicitud response = null;
        try {
            RecepcionComprobantes port = service.getRecepcionComprobantesPort();
            response = port.validarComprobante(xml);
        } catch (Exception e) {
//            Logger.getLogger(ec/gob/sri/comprobantes/util/EnvioComprobantesWs.getName()).log(Level.SEVERE, null, e);
            response = new RespuestaSolicitud();
            response.setEstado(e.getMessage());
            return response;
        }
        return response;
    }

    public RespuestaSolicitud enviarComprobanteLotes(String ruc, File xml, String tipoComprobante, String versionXsd) {
        RespuestaSolicitud response = null;
        try {
            RecepcionComprobantes port = service.getRecepcionComprobantesPort();
            response = port.validarComprobante(ArchivoUtils.convertirArchivoAByteArray(xml));
        } catch (Exception e) {
//            Logger.getLogger(ec/gob/sri/comprobantes/util/EnvioComprobantesWs.getName()).log(Level.SEVERE, null, e);
            response = new RespuestaSolicitud();
            response.setEstado(e.getMessage());
            return response;
        }
        return response;
    }

    public static RespuestaSolicitud obtenerRespuestaEnvio(File archivo, String ruc, String tipoComprobante, String claveDeAcceso, String urlWsdl) {
        RespuestaSolicitud respuesta = new RespuestaSolicitud();
        EnvioComprobantesWs cliente = null;
        try {
            cliente = new EnvioComprobantesWs(urlWsdl);
        } catch (Exception ex) {
//            Logger.getLogger(ec/gob/sri/comprobantes/util/EnvioComprobantesWs.getName()).log(Level.SEVERE, null, ex);
            respuesta.setEstado(ex.getMessage());
            return respuesta;
        }
        respuesta = cliente.enviarComprobante(ruc, archivo, tipoComprobante, "1.0.0");
        return respuesta;
    }

    public static void guardarRespuesta(String claveDeAcceso, String archivo, String estado, java.util.Date fecha) {
        try {
            Date sqlDate = new Date(fecha.getTime());
            Respuesta item = new Respuesta(null, claveDeAcceso, archivo, estado, sqlDate);
//            RespuestaSQL resp = new RespuestaSQL();
//            resp.insertarRespuesta(item);
        } catch (Exception ex) {
//            Logger.getLogger(ec/gob/sri/comprobantes/util/EnvioComprobantesWs.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static String obtenerMensajeRespuesta(RespuestaSolicitud respuesta) {
        StringBuilder mensajeDesplegable = new StringBuilder();
        if (respuesta.getEstado().equals("DEVUELTA")) {
            ec.gob.sri.comprobantes.ws.RespuestaSolicitud.Comprobantes comprobantes = respuesta.getComprobantes();
            for (Iterator i1 = comprobantes.getComprobante().iterator(); i1.hasNext(); mensajeDesplegable.append("\n")) {
                Comprobante comp = (Comprobante) i1.next();
                mensajeDesplegable.append(comp.getClaveAcceso());
                mensajeDesplegable.append("\n");
                for (Iterator i2 = comp.getMensajes().getMensaje().iterator(); i2.hasNext(); mensajeDesplegable.append("\n")) {
                    Mensaje m = (Mensaje) i2.next();
                    mensajeDesplegable.append(m.getMensaje()).append(" :\n");
                    mensajeDesplegable.append(m.getInformacionAdicional() == null ? "" : m.getInformacionAdicional());
                }

            }

        }
        return mensajeDesplegable.toString();
    }
    private static RecepcionComprobantesService service;
    private static final String VERSION = "1.0.0";
    public static final String ESTADO_RECIBIDA = "RECIBIDA";
    public static final String ESTADO_DEVUELTA = "DEVUELTA";
}